<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>MiXiM: Signal Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">MiXiM
   &#160;<span id="projectnumber">2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('a00192.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">Signal Class Reference<div class="ingroups"><a class="el" href="a00510.html">phyLayer - physical layer modules</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="Signal" -->
<p>The signal class stores the physical representation of the signal of an AirFrame.  
 <a href="a00192.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00305_source.html">Signal_.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for Signal:</div>
<div class="dyncontent">
<div class="center"><img src="a00995.png" border="0" usemap="#Signal_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="a00996.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="a00049.html">ConcatConstMapping</a><br class="typebreak"/>
&lt; std::multiplies&lt; double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a484a5f8dfebfd933edcb1a55770df0e2">MultipliedMapping</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Shortcut type for a concatenated <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> using multiply operator.  <a href="#a484a5f8dfebfd933edcb1a55770df0e2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a463671c45cf3099eb81d8840c86a27b4"></a><!-- doxytag: member="Signal::ConstMappingList" ref="a463671c45cf3099eb81d8840c86a27b4" args="" -->
typedef std::list&lt; <a class="el" href="a00058.html">ConstMapping</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a463671c45cf3099eb81d8840c86a27b4">ConstMappingList</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Shortcut type for a list of ConstMappings. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0da19733584d5de330474ee32b6bc186"></a><!-- doxytag: member="Signal::Signal" ref="a0da19733584d5de330474ee32b6bc186" args="(simtime_t_cref start=&#45;1.0, simtime_t_cref length=&#45;1.0)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a0da19733584d5de330474ee32b6bc186">Signal</a> (simtime_t_cref start=-1.0, simtime_t_cref length=-1.0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a signal with the specified start and length. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a079cc6bee7380f5744001d5f26505b2c"></a><!-- doxytag: member="Signal::Signal" ref="a079cc6bee7380f5744001d5f26505b2c" args="(const Signal &amp;o)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a079cc6bee7380f5744001d5f26505b2c">Signal</a> (const <a class="el" href="a00192.html">Signal</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Overwrites the copy constructor to make sure that the mappings are cloned correct. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a562664a0cf28279a2d0f0bbdc1fedf8b"></a><!-- doxytag: member="Signal::operator=" ref="a562664a0cf28279a2d0f0bbdc1fedf8b" args="(const Signal &amp;o)" -->
<a class="el" href="a00192.html">Signal</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a562664a0cf28279a2d0f0bbdc1fedf8b">operator=</a> (const <a class="el" href="a00192.html">Signal</a> &amp;o)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Overwrites the copy operator to make sure that the mappings are cloned correct. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0">swap</a> (<a class="el" href="a00192.html">Signal</a> &amp;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps data with another Signal.  <a href="#a9b608e1461bfaaff534bc7c0b220c6b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7a1d116cda63e790bf9aab549d57d3a"></a><!-- doxytag: member="Signal::~Signal" ref="ae7a1d116cda63e790bf9aab549d57d3a" args="()" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#ae7a1d116cda63e790bf9aab549d57d3a">~Signal</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the functions of this signal. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d2a31d69d90186d6f0ba17719f3a9e6"></a><!-- doxytag: member="Signal::getSendingStart" ref="a0d2a31d69d90186d6f0ba17719f3a9e6" args="() const " -->
simtime_t_cref&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a0d2a31d69d90186d6f0ba17719f3a9e6">getSendingStart</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the point in time when the sending of the <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a> started at the sender module. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65d72906b81304dd63f93408ba8f4b34"></a><!-- doxytag: member="Signal::getSendingEnd" ref="a65d72906b81304dd63f93408ba8f4b34" args="() const " -->
simtime_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a65d72906b81304dd63f93408ba8f4b34">getSendingEnd</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the point in time when the sending of the <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a> ended at the sender module. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c4710243cf87caf7dfc9f313e2619b2"></a><!-- doxytag: member="Signal::getReceptionStart" ref="a7c4710243cf87caf7dfc9f313e2619b2" args="() const " -->
simtime_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a7c4710243cf87caf7dfc9f313e2619b2">getReceptionStart</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the point in time when the receiving of the <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a> started at the receiver module. Already includes the propagation delay. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2875223239e124d85949e1116cc12ae9"></a><!-- doxytag: member="Signal::getReceptionEnd" ref="a2875223239e124d85949e1116cc12ae9" args="() const " -->
simtime_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a2875223239e124d85949e1116cc12ae9">getReceptionEnd</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the point in time when the receiving of the <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a> ended at the receiver module. Already includes the propagation delay. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22f7cede842dbfe895cd8aedf708402f"></a><!-- doxytag: member="Signal::getDuration" ref="a22f7cede842dbfe895cd8aedf708402f" args="() const " -->
simtime_t_cref&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a22f7cede842dbfe895cd8aedf708402f">getDuration</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the duration of the signal transmission. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a815379c4c75ace99ad262d4abc651f11"></a><!-- doxytag: member="Signal::getPropagationDelay" ref="a815379c4c75ace99ad262d4abc651f11" args="() const " -->
simtime_t_cref&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a815379c4c75ace99ad262d4abc651f11">getPropagationDelay</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the propagation delay of the signal. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a2864ac2fa780e25223db94ba3d36b8e9">setPropagationDelay</a> (simtime_t_cref delay)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the propagation delay of the signal.  <a href="#a2864ac2fa780e25223db94ba3d36b8e9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#ad8c5494d0f7bd564bf14dc0c90f9a361">setTransmissionPower</a> (<a class="el" href="a00058.html">ConstMapping</a> *<a class="el" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3">power</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the function representing the transmission power of the signal.  <a href="#ad8c5494d0f7bd564bf14dc0c90f9a361"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a86e4ecdabd5ca03ede5e2c81c6b76002">setBitrate</a> (<a class="el" href="a00136.html">Mapping</a> *<a class="el" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85">bitrate</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the function representing the bitrate of the signal.  <a href="#a86e4ecdabd5ca03ede5e2c81c6b76002"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a0beeef0f27c33145a0fca521df1c5f5c">addAttenuation</a> (<a class="el" href="a00058.html">ConstMapping</a> *att)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a function representing an attenuation of the signal.  <a href="#a0beeef0f27c33145a0fca521df1c5f5c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00058.html">ConstMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a392ecf1a624edfb90243e7227370a772">getTransmissionPower</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the function representing the transmission power of the signal.  <a href="#a392ecf1a624edfb90243e7227370a772"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00058.html">ConstMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a5e8552f0d95e8faea2dee32ee7ba7212">getTransmissionPower</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the function representing the transmission power of the signal.  <a href="#a5e8552f0d95e8faea2dee32ee7ba7212"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcfa26a0f384f475a019446b33c7458d"></a><!-- doxytag: member="Signal::getBitrate" ref="afcfa26a0f384f475a019446b33c7458d" args="() const " -->
const <a class="el" href="a00136.html">Mapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#afcfa26a0f384f475a019446b33c7458d">getBitrate</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the function representing the bitrate of the signal. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b949d4e6bd18f6baccd66748c2bcd78"></a><!-- doxytag: member="Signal::getAttenuation" ref="a9b949d4e6bd18f6baccd66748c2bcd78" args="() const " -->
const <a class="el" href="a00192.html#a463671c45cf3099eb81d8840c86a27b4">ConstMappingList</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a9b949d4e6bd18f6baccd66748c2bcd78">getAttenuation</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a list of functions representing the attenuations of the signal. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00192.html#a484a5f8dfebfd933edcb1a55770df0e2">MultipliedMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a78255d9a9f6c3bffb72a51ce48e2fbb9">getReceivingPower</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates and returns the receiving power of this <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a>. Ownership of the returned mapping belongs to this class.  <a href="#a78255d9a9f6c3bffb72a51ce48e2fbb9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">cModule *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#ac78bb49ae3090d9954722feaad3e88ae">getReceptionModule</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">cGate *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a3de107a6c7b0283bb79b7e641616b26c">getReceptionGate</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">cModule *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a2edb4eb1bb7cb96f389999ba624ad5bd">getSendingModule</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">cGate *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a687a2fde154487ff1c6516073a5fc0c4">getSendingGate</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6354b073881f4ea6190637d2e0164372"></a><!-- doxytag: member="Signal::setReceptionSenderInfo" ref="a6354b073881f4ea6190637d2e0164372" args="(const cMessage *const pMsg)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a6354b073881f4ea6190637d2e0164372">setReceptionSenderInfo</a> (const cMessage *const pMsg)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves the arrival sender module information form message. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a594e926b3d8ff3330375c8850699ae76">markRcvPowerOutdated</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Deletes the rcvPower mapping member because it became out-dated.  <a href="#a594e926b3d8ff3330375c8850699ae76"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e9509d6f61f45994b1bf49d319e4b31"></a><!-- doxytag: member="Signal::senderModuleID" ref="a3e9509d6f61f45994b1bf49d319e4b31" args="" -->
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a3e9509d6f61f45994b1bf49d319e4b31">senderModuleID</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sender module id, additional definition here because <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a> will do some selfMessages with AirFrame. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7355857ae0852dfe9e415d475585396b"></a><!-- doxytag: member="Signal::senderFromGateID" ref="a7355857ae0852dfe9e415d475585396b" args="" -->
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a7355857ae0852dfe9e415d475585396b">senderFromGateID</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sender gate id, additional definition here because <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a> will do some selfMessages with AirFrame. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44ca8e70f7bd86a8af28bd382bea7434"></a><!-- doxytag: member="Signal::receiverModuleID" ref="a44ca8e70f7bd86a8af28bd382bea7434" args="" -->
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a44ca8e70f7bd86a8af28bd382bea7434">receiverModuleID</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Receiver module id, additional definition here because <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a> will do some selfMessages with AirFrame. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a539dc4174aaa8ca81c7b40b9e39470fe"></a><!-- doxytag: member="Signal::receiverToGateID" ref="a539dc4174aaa8ca81c7b40b9e39470fe" args="" -->
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a539dc4174aaa8ca81c7b40b9e39470fe">receiverToGateID</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Receiver gate id, additional definition here because <a class="el" href="a00029.html" title="The BasePhyLayer represents the physical layer of a nic.">BasePhyLayer</a> will do some selfMessages with AirFrame. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56c032041881146f469092037028affb"></a><!-- doxytag: member="Signal::sendingStart" ref="a56c032041881146f469092037028affb" args="" -->
simtime_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a56c032041881146f469092037028affb">sendingStart</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The start of the signal transmission at the sender module. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8073ad666fac40bf900fe0d9d6a88fa1"></a><!-- doxytag: member="Signal::duration" ref="a8073ad666fac40bf900fe0d9d6a88fa1" args="" -->
simtime_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a8073ad666fac40bf900fe0d9d6a88fa1">duration</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The duration of the signal transmission. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8549f666048ce96bcfd1b4d9c9a3e95b"></a><!-- doxytag: member="Signal::propagationDelay" ref="a8549f666048ce96bcfd1b4d9c9a3e95b" args="" -->
simtime_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b">propagationDelay</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The propagation delay of the transmission. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3570fb45af2a0f7580ee32c57e90e2b3"></a><!-- doxytag: member="Signal::power" ref="a3570fb45af2a0f7580ee32c57e90e2b3" args="" -->
<a class="el" href="a00058.html">ConstMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3">power</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the function which describes the power of the signal. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a6e1ad1165fc73157c8820739011e85"></a><!-- doxytag: member="Signal::bitrate" ref="a4a6e1ad1165fc73157c8820739011e85" args="" -->
<a class="el" href="a00136.html">Mapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85">bitrate</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the function which describes the bitrate of the signal. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac60bce52288a4fc2067aa394918edf37"></a><!-- doxytag: member="Signal::txBitrate" ref="ac60bce52288a4fc2067aa394918edf37" args="" -->
<a class="el" href="a00136.html">Mapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#ac60bce52288a4fc2067aa394918edf37">txBitrate</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">If propagation delay is not zero this stores the undelayed bitrate. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fb9da7932d7c4746f2afaaa21153cce"></a><!-- doxytag: member="Signal::attenuations" ref="a1fb9da7932d7c4746f2afaaa21153cce" args="" -->
<a class="el" href="a00192.html#a463671c45cf3099eb81d8840c86a27b4">ConstMappingList</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce">attenuations</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the functions describing the attenuations of the signal. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00192.html#a484a5f8dfebfd933edcb1a55770df0e2">MultipliedMapping</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e">rcvPower</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the mapping defining the receiving power of the signal.  <a href="#a9e3d433a61e8188c8a6de5b540da8d5e"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>The signal class stores the physical representation of the signal of an AirFrame. </p>
<p>This includes start, duration and propagation delay of the signal, Mappings which represent the transmission power, bitrate, attenuations caused by effects of the channel on the signal during its transmission and the receiving power.</p>
<p>Note: Although the <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a> itself has a signalSendingStart parameter the Mappings it contains should use absolute time positions to store the values at (NOT relative to the start time of the signal).</p>
<p>The <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a> is created at the senders MAC layer which has to define the TX-power- and the bitrate <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a>. Sending start time and duration is added at the sender's physical layer. Attenuation Mappings are added to the <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a> by the AnalogueModels of the receiver's physical layer. The RX-power <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> is calculated on demand by multiplying the TX-power <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> with every attenuation <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> of the signal. </p>
</div><hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a484a5f8dfebfd933edcb1a55770df0e2"></a><!-- doxytag: member="Signal::MultipliedMapping" ref="a484a5f8dfebfd933edcb1a55770df0e2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="a00049.html">ConcatConstMapping</a>&lt;std::multiplies&lt;double&gt; &gt; <a class="el" href="a00192.html#a484a5f8dfebfd933edcb1a55770df0e2">Signal::MultipliedMapping</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Shortcut type for a concatenated <a class="el" href="a00136.html" title="Represents a changeable mapping (mathematical function) from at least time to Argument::mapped_type.">Mapping</a> using multiply operator. </p>
<p>Used to define the receiving power mapping. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a0beeef0f27c33145a0fca521df1c5f5c"></a><!-- doxytag: member="Signal::addAttenuation" ref="a0beeef0f27c33145a0fca521df1c5f5c" args="(ConstMapping *att)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Signal::addAttenuation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00058.html">ConstMapping</a> *&#160;</td>
          <td class="paramname"><em>att</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Adds a function representing an attenuation of the signal. </p>
<p>The ownership of the passed pointer goes to the signal. </p>

<p>Referenced by <a class="el" href="a00172.html#a90557ea84420483d5e2cc39cc2cce017">PERModel::filterSignal()</a>, <a class="el" href="a00103.html#a8280f0e0f92d28db257f9d3cfeb8ced3">IntensityModel::filterSignal()</a>, <a class="el" href="a00184.html#a9c8c9efca7849ffb32d315a71d2a7184">RandomFreqTimeModel::filterSignal()</a>, <a class="el" href="a00185.html#acac71950a5a7176292f7c404c32f609c">RandomFrequencyOnlyModel::filterSignal()</a>, <a class="el" href="a00127.html#ac7fd9376f5521851bd3888d99dc451c2">LogNormalShadowing::filterSignal()</a>, <a class="el" href="a00039.html#a6e8f40d451a398c981c5039da397b4db">BreakpointPathlossModel::filterSignal()</a>, <a class="el" href="a00222.html#a3a27ac6615499a86832230bfaafabb7a">UWBIRIEEE802154APathlossModel::filterSignal()</a>, <a class="el" href="a00226.html#a9fda7231500ecd807a4fd8295b9907cb">UWBIRStochasticPathlossModel::filterSignal()</a>, <a class="el" href="a00182.html#ad1d87d5b9447579b3d28dcdcc4d0dd32">RadioStateAnalogueModel::filterSignal()</a>, <a class="el" href="a00199.html#a7a1a3a2080c5cf5d7ac3550f33099508">SimplePathlossModel::filterSignal()</a>, and <a class="el" href="a00114.html#a9674a1930ca4ca810b79665f20968a62">JakesFading::filterSignal()</a>.</p>
<div class="fragment"><pre class="fragment">                                         {
    <span class="comment">//assert the attenuation wasn&#39;t already added to the list before</span>
    assert(std::find(<a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>.begin(), <a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>.end(), att) == <a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>.end());

    <a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>.push_back(att);

    <span class="keywordflow">if</span>(<a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>)
      <a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>-&gt;<a class="code" href="a00049.html#ad9e4caf92010d92e76ed86a597e3399f" title="Adds another Mapping to the list of Mappings to concatenate.">addMapping</a>(att);
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a78255d9a9f6c3bffb72a51ce48e2fbb9"></a><!-- doxytag: member="Signal::getReceivingPower" ref="a78255d9a9f6c3bffb72a51ce48e2fbb9" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="a00192.html#a484a5f8dfebfd933edcb1a55770df0e2">MultipliedMapping</a>* Signal::getReceivingPower </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calculates and returns the receiving power of this <a class="el" href="a00192.html" title="The signal class stores the physical representation of the signal of an AirFrame.">Signal</a>. Ownership of the returned mapping belongs to this class. </p>
<p>The receiving power is calculated by multiplying the transmission power with the attenuation of every receiving phys <a class="el" href="a00009.html" title="Interface for the analogue models of the physical layer.">AnalogueModel</a>. </p>

<p>References <a class="el" href="a00013.html#a8523627cdc70492e5e0935b9a3a78cc4">Argument::MappedZero</a>.</p>

<p>Referenced by <a class="el" href="a00020.html#a53eb943cea4604171a5c1cc4cdec4c20">BaseDecider::calculateRSSIMapping()</a>, <a class="el" href="a00020.html#aea9e98c3a9752bcf08e42742b01d2fe3">BaseDecider::calculateSnrMapping()</a>, <a class="el" href="a00071.html#a81e91e9aa6db0ebad8d19ae8b3bc037a">Decider80211::getFrameReceivingPower()</a>, and <a class="el" href="a00020.html#a9f433fe8b7693074d3121320e50c85e3">BaseDecider::getFrameReceivingPower()</a>.</p>
<div class="fragment"><pre class="fragment">                                                     {
    <span class="keywordflow">if</span>(!<a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>)
    {
      <a class="code" href="a00058.html" title="Represents a not changeable mapping (mathematical function) from domain with at least the time to a A...">ConstMapping</a>* tmp = <a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>;
      <span class="keywordflow">if</span>(<a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a> != 0) {
        tmp = <span class="keyword">new</span> <a class="code" href="a00056.html" title="Moves another ConstMapping in its time dimension.">ConstDelayedMapping</a>(<a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>, <a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a>);
        <span class="comment">// tmp will be deleted in ~Signal(), where rcvPower-&gt;getRefMapping()</span>
        <span class="comment">// will be used for accessing this pointer</span>
      }
      <a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a> = <span class="keyword">new</span> <a class="code" href="a00192.html#a484a5f8dfebfd933edcb1a55770df0e2" title="Shortcut type for a concatenated Mapping using multiply operator.">MultipliedMapping</a>( tmp
                                      , <a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>.begin()
                                      , <a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>.end()
                                      , false
                                      , <a class="code" href="a00013.html#a8523627cdc70492e5e0935b9a3a78cc4" title="Zero value of a Argument value.">Argument::MappedZero</a> );
    }

    <span class="keywordflow">return</span> <a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>;
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a3de107a6c7b0283bb79b7e641616b26c"></a><!-- doxytag: member="Signal::getReceptionGate" ref="a3de107a6c7b0283bb79b7e641616b26c" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cGate * Signal::getReceptionGate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns pointers to the gate from which the signal was sent and on which gate it arrived. A NULL pointer is returned for new (unsent) signal. </p>

<p>References <a class="el" href="a00192.html#ac78bb49ae3090d9954722feaad3e88ae">getReceptionModule()</a>, and <a class="el" href="a00192.html#a539dc4174aaa8ca81c7b40b9e39470fe">receiverToGateID</a>.</p>
<div class="fragment"><pre class="fragment">{
    <span class="keywordflow">if</span> (<a class="code" href="a00192.html#a539dc4174aaa8ca81c7b40b9e39470fe" title="Receiver gate id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">receiverToGateID</a> &lt; 0) <span class="keywordflow">return</span> NULL;
    cModule *<span class="keyword">const</span> mod = <a class="code" href="a00192.html#ac78bb49ae3090d9954722feaad3e88ae">getReceptionModule</a>();
    <span class="keywordflow">return</span> !mod ? NULL : mod-&gt;gate(<a class="code" href="a00192.html#a539dc4174aaa8ca81c7b40b9e39470fe" title="Receiver gate id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">receiverToGateID</a>);
}
</pre></div>
</div>
</div>
<a class="anchor" id="ac78bb49ae3090d9954722feaad3e88ae"></a><!-- doxytag: member="Signal::getReceptionModule" ref="ac78bb49ae3090d9954722feaad3e88ae" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cModule* Signal::getReceptionModule </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a pointer to the arrival module. It returns NULL if the signal has not been sent/received yet, or if the module was deleted in the meantime. </p>

<p>Referenced by <a class="el" href="a00192.html#a3de107a6c7b0283bb79b7e641616b26c">getReceptionGate()</a>.</p>
<div class="fragment"><pre class="fragment">{<span class="keywordflow">return</span> <a class="code" href="a00192.html#a44ca8e70f7bd86a8af28bd382bea7434" title="Receiver module id, additional definition here because BasePhyLayer will do some selfMessages with Ai...">receiverModuleID</a> &lt; 0 ? NULL : simulation.getModule(<a class="code" href="a00192.html#a44ca8e70f7bd86a8af28bd382bea7434" title="Receiver module id, additional definition here because BasePhyLayer will do some selfMessages with Ai...">receiverModuleID</a>);}
</pre></div>
</div>
</div>
<a class="anchor" id="a687a2fde154487ff1c6516073a5fc0c4"></a><!-- doxytag: member="Signal::getSendingGate" ref="a687a2fde154487ff1c6516073a5fc0c4" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cGate * Signal::getSendingGate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns pointers to the gate from which the signal was sent and on which gate it arrived. A NULL pointer is returned for new (unsent) signal. </p>

<p>References <a class="el" href="a00192.html#a2edb4eb1bb7cb96f389999ba624ad5bd">getSendingModule()</a>, and <a class="el" href="a00192.html#a7355857ae0852dfe9e415d475585396b">senderFromGateID</a>.</p>
<div class="fragment"><pre class="fragment">{
    <span class="keywordflow">if</span> (<a class="code" href="a00192.html#a7355857ae0852dfe9e415d475585396b" title="Sender gate id, additional definition here because BasePhyLayer will do some selfMessages with AirFra...">senderFromGateID</a> &lt; 0) <span class="keywordflow">return</span> NULL;
    cModule *<span class="keyword">const</span> mod = <a class="code" href="a00192.html#a2edb4eb1bb7cb96f389999ba624ad5bd">getSendingModule</a>();
    <span class="keywordflow">return</span> !mod ? NULL : mod-&gt;gate(<a class="code" href="a00192.html#a7355857ae0852dfe9e415d475585396b" title="Sender gate id, additional definition here because BasePhyLayer will do some selfMessages with AirFra...">senderFromGateID</a>);
}
</pre></div>
</div>
</div>
<a class="anchor" id="a2edb4eb1bb7cb96f389999ba624ad5bd"></a><!-- doxytag: member="Signal::getSendingModule" ref="a2edb4eb1bb7cb96f389999ba624ad5bd" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cModule* Signal::getSendingModule </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a pointer to the sender module. It returns NULL if the signal has not been sent/received yet, or if the sender module got deleted in the meantime. </p>

<p>Referenced by <a class="el" href="a00192.html#a687a2fde154487ff1c6516073a5fc0c4">getSendingGate()</a>.</p>
<div class="fragment"><pre class="fragment">{<span class="keywordflow">return</span> <a class="code" href="a00192.html#a3e9509d6f61f45994b1bf49d319e4b31" title="Sender module id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">senderModuleID</a> &lt; 0 ? NULL : simulation.getModule(<a class="code" href="a00192.html#a3e9509d6f61f45994b1bf49d319e4b31" title="Sender module id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">senderModuleID</a>);}
</pre></div>
</div>
</div>
<a class="anchor" id="a392ecf1a624edfb90243e7227370a772"></a><!-- doxytag: member="Signal::getTransmissionPower" ref="a392ecf1a624edfb90243e7227370a772" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00058.html">ConstMapping</a>* Signal::getTransmissionPower </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the function representing the transmission power of the signal. </p>
<p>Be aware that the transmission power mapping is not yet affected by the propagation delay! </p>

<p>Referenced by <a class="el" href="a00222.html#a3a27ac6615499a86832230bfaafabb7a">UWBIRIEEE802154APathlossModel::filterSignal()</a>, and <a class="el" href="a00199.html#a7a1a3a2080c5cf5d7ac3550f33099508">SimplePathlossModel::filterSignal()</a>.</p>
<div class="fragment"><pre class="fragment">                                       {
    <span class="keywordflow">return</span> <a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>;
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a5e8552f0d95e8faea2dee32ee7ba7212"></a><!-- doxytag: member="Signal::getTransmissionPower" ref="a5e8552f0d95e8faea2dee32ee7ba7212" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="a00058.html">ConstMapping</a>* Signal::getTransmissionPower </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the function representing the transmission power of the signal. </p>
<p>Be aware that the transmission power mapping is not yet affected by the propagation delay! </p>
<div class="fragment"><pre class="fragment">                                                   {
    <span class="keywordflow">return</span> <a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>;
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a594e926b3d8ff3330375c8850699ae76"></a><!-- doxytag: member="Signal::markRcvPowerOutdated" ref="a594e926b3d8ff3330375c8850699ae76" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Signal::markRcvPowerOutdated </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Deletes the rcvPower mapping member because it became out-dated. </p>
<p>This happens when transmission power or propagation delay changes. </p>

<p>Referenced by <a class="el" href="a00192.html#a562664a0cf28279a2d0f0bbdc1fedf8b">operator=()</a>, <a class="el" href="a00192.html#a2864ac2fa780e25223db94ba3d36b8e9">setPropagationDelay()</a>, and <a class="el" href="a00192.html#ad8c5494d0f7bd564bf14dc0c90f9a361">setTransmissionPower()</a>.</p>
<div class="fragment"><pre class="fragment">                              {
    <span class="keywordflow">if</span>(<a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>){
      <span class="keywordflow">if</span>(<a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a> != 0) {
        assert(<a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>-&gt;<a class="code" href="a00049.html#abcd3a9507ddf2e6e227fb0682f736b9a" title="Returns the pointer to the reference mapping.">getRefMapping</a>() != <a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>);
        <span class="keyword">delete</span> <a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>-&gt;<a class="code" href="a00049.html#abcd3a9507ddf2e6e227fb0682f736b9a" title="Returns the pointer to the reference mapping.">getRefMapping</a>();
      }
      <span class="keyword">delete</span> <a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>;
      <a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a> = 0;
    }
  }
</pre></div>
</div>
</div>
<a class="anchor" id="a86e4ecdabd5ca03ede5e2c81c6b76002"></a><!-- doxytag: member="Signal::setBitrate" ref="a86e4ecdabd5ca03ede5e2c81c6b76002" args="(Mapping *bitrate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Signal::setBitrate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00136.html">Mapping</a> *&#160;</td>
          <td class="paramname"><em>bitrate</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the function representing the bitrate of the signal. </p>
<p>The ownership of the passed pointer goes to the signal. </p>

<p>References <a class="el" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85">bitrate</a>, and <a class="el" href="a00192.html#ac60bce52288a4fc2067aa394918edf37">txBitrate</a>.</p>

<p>Referenced by <a class="el" href="a00196.html#aa39c30004cbd08a2a0b0405d818313b0">SimpleMacLayer::createMacPkt()</a>, <a class="el" href="a00026.html#a28ca155ff241c3e202a94724cc87b232">BaseMacLayer::createSignal()</a>, and <a class="el" href="a00128.html#a3a62f334346a15619853a8c6c87367aa">Mac80211::createSignal()</a>.</p>
<div class="fragment"><pre class="fragment">{
  assert(!<a class="code" href="a00192.html#ac60bce52288a4fc2067aa394918edf37" title="If propagation delay is not zero this stores the undelayed bitrate.">txBitrate</a>);

  <span class="keywordflow">if</span>(this-&gt;bitrate)
    <span class="keyword">delete</span> this-&gt;<a class="code" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85" title="Stores the function which describes the bitrate of the signal.">bitrate</a>;

  this-&gt;bitrate = <a class="code" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85" title="Stores the function which describes the bitrate of the signal.">bitrate</a>;
}
</pre></div>
</div>
</div>
<a class="anchor" id="a2864ac2fa780e25223db94ba3d36b8e9"></a><!-- doxytag: member="Signal::setPropagationDelay" ref="a2864ac2fa780e25223db94ba3d36b8e9" args="(simtime_t_cref delay)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Signal::setPropagationDelay </td>
          <td>(</td>
          <td class="paramtype">simtime_t_cref&#160;</td>
          <td class="paramname"><em>delay</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the propagation delay of the signal. </p>
<p>This should be only set by the sending physical layer. </p>

<p>References <a class="el" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85">bitrate</a>, <a class="el" href="a00192.html#a594e926b3d8ff3330375c8850699ae76">markRcvPowerOutdated()</a>, <a class="el" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b">propagationDelay</a>, and <a class="el" href="a00192.html#ac60bce52288a4fc2067aa394918edf37">txBitrate</a>.</p>

<p>Referenced by <a class="el" href="a00029.html#af21aac7c5a0c4bc282817232f3879611">BasePhyLayer::handleAirFrameStartReceive()</a>.</p>
<div class="fragment"><pre class="fragment">                                                     {
  assert(<a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a> == 0);
  assert(!<a class="code" href="a00192.html#ac60bce52288a4fc2067aa394918edf37" title="If propagation delay is not zero this stores the undelayed bitrate.">txBitrate</a>);

  <a class="code" href="a00192.html#a594e926b3d8ff3330375c8850699ae76" title="Deletes the rcvPower mapping member because it became out-dated.">markRcvPowerOutdated</a>();

  <a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a> = delay;

  <span class="keywordflow">if</span>(<a class="code" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85" title="Stores the function which describes the bitrate of the signal.">bitrate</a>) {
    <a class="code" href="a00192.html#ac60bce52288a4fc2067aa394918edf37" title="If propagation delay is not zero this stores the undelayed bitrate.">txBitrate</a> = <a class="code" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85" title="Stores the function which describes the bitrate of the signal.">bitrate</a>;
    <a class="code" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85" title="Stores the function which describes the bitrate of the signal.">bitrate</a> = <span class="keyword">new</span> <a class="code" href="a00083.html" title="Moves another Mapping in its time dimension.">DelayedMapping</a>(<a class="code" href="a00192.html#ac60bce52288a4fc2067aa394918edf37" title="If propagation delay is not zero this stores the undelayed bitrate.">txBitrate</a>, <a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a>);
  }
}
</pre></div>
</div>
</div>
<a class="anchor" id="ad8c5494d0f7bd564bf14dc0c90f9a361"></a><!-- doxytag: member="Signal::setTransmissionPower" ref="ad8c5494d0f7bd564bf14dc0c90f9a361" args="(ConstMapping *power)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Signal::setTransmissionPower </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00058.html">ConstMapping</a> *&#160;</td>
          <td class="paramname"><em>power</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the function representing the transmission power of the signal. </p>
<p>The ownership of the passed pointer goes to the signal. </p>

<p>References <a class="el" href="a00192.html#a594e926b3d8ff3330375c8850699ae76">markRcvPowerOutdated()</a>, and <a class="el" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3">power</a>.</p>

<p>Referenced by <a class="el" href="a00196.html#aa39c30004cbd08a2a0b0405d818313b0">SimpleMacLayer::createMacPkt()</a>, <a class="el" href="a00026.html#a28ca155ff241c3e202a94724cc87b232">BaseMacLayer::createSignal()</a>, <a class="el" href="a00128.html#a3a62f334346a15619853a8c6c87367aa">Mac80211::createSignal()</a>, and <a class="el" href="a00222.html#a3a27ac6615499a86832230bfaafabb7a">UWBIRIEEE802154APathlossModel::filterSignal()</a>.</p>
<div class="fragment"><pre class="fragment">{
  <span class="keywordflow">if</span>(this-&gt;power){
    <a class="code" href="a00192.html#a594e926b3d8ff3330375c8850699ae76" title="Deletes the rcvPower mapping member because it became out-dated.">markRcvPowerOutdated</a>();
    <span class="keyword">delete</span> this-&gt;<a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>;
  }

  this-&gt;power = <a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>;
}
</pre></div>
</div>
</div>
<a class="anchor" id="a9b608e1461bfaaff534bc7c0b220c6b0"></a><!-- doxytag: member="Signal::swap" ref="a9b608e1461bfaaff534bc7c0b220c6b0" args="(Signal &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Signal::swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00192.html">Signal</a> &amp;&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Swaps data with another Signal. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>A Signal of the same element and allocator types.</td></tr>
  </table>
  </dd>
</dl>
<p>This exchanges the elements between two Signal's in constant time. Note that the global std::swap() function is specialized such that std::swap(s1,s2) will feed to this function. </p>

<p>References <a class="el" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce">attenuations</a>, <a class="el" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85">bitrate</a>, <a class="el" href="a00192.html#a8073ad666fac40bf900fe0d9d6a88fa1">duration</a>, <a class="el" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3">power</a>, <a class="el" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b">propagationDelay</a>, <a class="el" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e">rcvPower</a>, <a class="el" href="a00192.html#a44ca8e70f7bd86a8af28bd382bea7434">receiverModuleID</a>, <a class="el" href="a00192.html#a539dc4174aaa8ca81c7b40b9e39470fe">receiverToGateID</a>, <a class="el" href="a00192.html#a7355857ae0852dfe9e415d475585396b">senderFromGateID</a>, <a class="el" href="a00192.html#a3e9509d6f61f45994b1bf49d319e4b31">senderModuleID</a>, <a class="el" href="a00192.html#a56c032041881146f469092037028affb">sendingStart</a>, and <a class="el" href="a00192.html#ac60bce52288a4fc2067aa394918edf37">txBitrate</a>.</p>
<div class="fragment"><pre class="fragment">                           {
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a3e9509d6f61f45994b1bf49d319e4b31" title="Sender module id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">senderModuleID</a>,   s.<a class="code" href="a00192.html#a3e9509d6f61f45994b1bf49d319e4b31" title="Sender module id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">senderModuleID</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a7355857ae0852dfe9e415d475585396b" title="Sender gate id, additional definition here because BasePhyLayer will do some selfMessages with AirFra...">senderFromGateID</a>, s.<a class="code" href="a00192.html#a7355857ae0852dfe9e415d475585396b" title="Sender gate id, additional definition here because BasePhyLayer will do some selfMessages with AirFra...">senderFromGateID</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a44ca8e70f7bd86a8af28bd382bea7434" title="Receiver module id, additional definition here because BasePhyLayer will do some selfMessages with Ai...">receiverModuleID</a>, s.<a class="code" href="a00192.html#a44ca8e70f7bd86a8af28bd382bea7434" title="Receiver module id, additional definition here because BasePhyLayer will do some selfMessages with Ai...">receiverModuleID</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a539dc4174aaa8ca81c7b40b9e39470fe" title="Receiver gate id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">receiverToGateID</a>, s.<a class="code" href="a00192.html#a539dc4174aaa8ca81c7b40b9e39470fe" title="Receiver gate id, additional definition here because BasePhyLayer will do some selfMessages with AirF...">receiverToGateID</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a56c032041881146f469092037028affb" title="The start of the signal transmission at the sender module.">sendingStart</a>,     s.<a class="code" href="a00192.html#a56c032041881146f469092037028affb" title="The start of the signal transmission at the sender module.">sendingStart</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a8073ad666fac40bf900fe0d9d6a88fa1" title="The duration of the signal transmission.">duration</a>,         s.<a class="code" href="a00192.html#a8073ad666fac40bf900fe0d9d6a88fa1" title="The duration of the signal transmission.">duration</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a>, s.<a class="code" href="a00192.html#a8549f666048ce96bcfd1b4d9c9a3e95b" title="The propagation delay of the transmission.">propagationDelay</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>,            s.<a class="code" href="a00192.html#a3570fb45af2a0f7580ee32c57e90e2b3" title="Stores the function which describes the power of the signal.">power</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85" title="Stores the function which describes the bitrate of the signal.">bitrate</a>,          s.<a class="code" href="a00192.html#a4a6e1ad1165fc73157c8820739011e85" title="Stores the function which describes the bitrate of the signal.">bitrate</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#ac60bce52288a4fc2067aa394918edf37" title="If propagation delay is not zero this stores the undelayed bitrate.">txBitrate</a>,        s.<a class="code" href="a00192.html#ac60bce52288a4fc2067aa394918edf37" title="If propagation delay is not zero this stores the undelayed bitrate.">txBitrate</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>,     s.<a class="code" href="a00192.html#a1fb9da7932d7c4746f2afaaa21153cce" title="Stores the functions describing the attenuations of the signal.">attenuations</a>);
  <a class="code" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0" title="Swaps data with another Signal.">std::swap</a>(<a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>,         s.<a class="code" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e" title="Stores the mapping defining the receiving power of the signal.">rcvPower</a>);
}
</pre></div>
</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a9e3d433a61e8188c8a6de5b540da8d5e"></a><!-- doxytag: member="Signal::rcvPower" ref="a9e3d433a61e8188c8a6de5b540da8d5e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00192.html#a484a5f8dfebfd933edcb1a55770df0e2">MultipliedMapping</a>* <a class="el" href="a00192.html#a9e3d433a61e8188c8a6de5b540da8d5e">Signal::rcvPower</a><code> [mutable, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Stores the mapping defining the receiving power of the signal. </p>
<p>Will be only calculated on access (thats why it is mutable). </p>

<p>Referenced by <a class="el" href="a00192.html#a9b608e1461bfaaff534bc7c0b220c6b0">swap()</a>, and <a class="el" href="a00192.html#ae7a1d116cda63e790bf9aab549d57d3a">~Signal()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>D:/Projects/MiXiM/extsrc/mixim/src/base/phyLayer/<a class="el" href="a00305_source.html">Signal_.h</a></li>
<li>D:/Projects/MiXiM/extsrc/mixim/src/base/phyLayer/Signal.cc</li>
</ul>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="a00192.html">Signal</a>      </li>

    <li class="footer">Generated on Tue Mar 5 2013 21:26:33 for MiXiM by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
